package com.koron.rating.change.mapper;

import com.koron.rating.change.bean.UnitChangeDetBean;
import com.koron.rating.classify.bean.RatingUnitTypeGroupVo;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;

public interface UnitChangeDetBeanMapper {
    int deleteByPrimaryKey(String primaryId);

    int deleteByChangeIdAndId(@Param("changeId")String changeId,@Param("id")String id);

    int insert(UnitChangeDetBean record);

    int insertSelective(UnitChangeDetBean record);

    UnitChangeDetBean selectByPrimaryKey(String primaryId);

    UnitChangeDetBean selectByChangeIdAndId(@Param("changeId")String changeId,@Param("id")String id);

    int updateByPrimaryKeySelective(UnitChangeDetBean record);

    int updateByPrimaryKey(UnitChangeDetBean record);

    int batchInsert(@Param("list") List<UnitChangeDetBean> list);

    /**
     * 查询 分页查询
     **/
    List<UnitChangeDetBean> list(@Param("parentId") String parentId, @Param("name") String name, @Param("changeId")String changeId);

    /**
     * 根据层级获取最大层级编码
     * @param level
     * @param changeId
     * @return
     */
    Integer getMaxLevelCodeByLevelAndChangeId(@Param("level")Integer level,@Param("changeId")String changeId);


    /**
     * 根据id查询路径
     * @param id
     * @param changeId
     * @return
     */
    String queryLevelPathByIdAndChangeId(@Param("id")String id,@Param("changeId")String changeId);


    /**
     * 根据id改父名称
     * @param updatedParentName
     * @param id
     * @param changeId
     * @return
     */
    int updateParentNameByIdAndChangeId(@Param("updatedParentName")String updatedParentName,@Param("id")String id,@Param("changeId")String changeId);


    /**
     * 跟新当前节点所有字节点及其孙子节点的full_path_name
     * @param originName
     * @param currentName
     * @param parentId
     * @param changeId
     * @return
     */
    int updateFullPathName(@Param("originName") String originName, @Param("currentName") String currentName, @Param("parentId") String parentId, @Param("changeId")String changeId);


    /**
     * 查子节点个数
     * @param id
     * @param changeId
     * @return
     */
    int countChildren(@Param("id") String id, @Param("changeId")String changeId);


    /**
     * 查询部门下的
     * @return
     */
    List<UnitChangeDetBean> listBydeptId(@Param("deptId") String deptId, @Param("name") String name, @Param("changeId")String changeId);

    /**
     * 单元级没没有默认到定位到单位级
     */
    UnitChangeDetBean getLeftUpperEquipmentByDeptId(@Param("deptId")String deptId, @Param("changeId")String changeId);


    /**
     * 默认定位到单元级
     * @param deptId
     * @return
     */
    UnitChangeDetBean getLeftUpperRatingByDeptId(@Param("deptId")String deptId, @Param("changeId")String changeId);

    /**
     * 同级下 查排序号比自己小 (上移)
     * @param parentId
     * @param maxSort
     * @return
     */
    List<UnitChangeDetBean> queryByParentIdAndSortBefore(@Param("parentId")String parentId, @Param("maxSort")Integer maxSort, @Param("changeId")String changeId);

    /**
     * 同级下 查排序号比自己大 (下移)
     * @param parentId
     * @param minSort
     * @return
     */
    List<UnitChangeDetBean> queryByParentIdAndSortAfter(@Param("parentId")String parentId, @Param("minSort")Integer minSort, @Param("changeId")String changeId);

    /**
     * 根据id改 排序号
     * @param updatedSort
     * @param id
     * @return
     */
    int updateSortById(@Param("updatedSort")Integer updatedSort,@Param("id")String id, @Param("changeId")String changeId);


    /**
     * 各类型数量
     * @return
     */
    List<RatingUnitTypeGroupVo> queryRatingUnitTypeGroup(@Param("deptId")String deptId, @Param("changeId")String changeId);


    /**
     * 根据变更id获取单元划分
     * @param changeId
     * @return
     */
    List<UnitChangeDetBean> queryByChangeId(@Param("changeId")String changeId);

    int deleteByPrimaryIdIn(@Param("primaryIdCollection")Collection<String> primaryIdCollection);

    //根据变更树id 找 单位原id(表体现为设备id)
    List<String> queryEquipmentIdByChangeIdAndIdIn(@Param("changeId")String changeId,@Param("idCollection")Collection<String> idCollection);

    // 撤销父节点时候， 根据变更单id 和 变更树id 匹配子节点删除
    int deleteByChangeIdAndFullPathCodeLike(@Param("changeId")String changeId,@Param("likeFullPathCode")String likeFullPathCode);

    //撤销父节点时候， 根据变更单id 和 变更树id 匹配子节点 主键id
    List<String> queryPrimaryIdByChangeIdAndFullPathCodeLike(@Param("changeId")String changeId,@Param("likeFullPathCode")String likeFullPathCode);

    //检查重复 2部门查重、3单位查重、(4、5、6)单元、设备、部件 查重
    List<String> queryEquipmentIdByChangeIdAndUnitTypeIn(@Param("changeId")String changeId,@Param("unitTypeCollection")Collection<String> unitTypeCollection, @Param("id") String id);







}
